iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
AI Engineering

拒絕通靈測試與 AI 垃圾:SDET 的 30 天自動化防禦工事系列 第 8

薛丁格的綠燈,AI 寫的測試竟然會隨機 Failed,どうして

  • 分享至 

  • xImage
  •  

AI 模型沒有「非同步(Async)」跟「環境隔離」的常識。它在幫你補 E2E (End-to-End) 測試或整合測試的時候,最常見的招式就是 time.sleep(1) (好吧不只AI,菜鳥也最愛)

你以為等個一秒鐘,資料庫就一定會寫完,畫面就一定會 Render 出來。結果到了 CI 伺服器上,遇到 CPU 負載飆高的時候,一秒鐘根本不夠用,測試直接報 Timeout。或者,AI 寫的測試去依賴了某個外部的第三方 API,只要網路抖一下, CI 就死給你看。

當 CI pipeline 開始出現隨機紅燈時,破窗效應就產生了。團隊會開始覺得「反正那個 test 本來就時好時壞」,當真正的 Bug 混進去讓測試亮紅燈時,大家也會以為「只是 CI 又在 flacky」,然後閉著眼睛按下強制 Merge。這條品質防線就徹底沒用了。

面對 AI 帶來的 Flaky Test 災難,我們必須展現鐵腕手段。任何不穩定的測試,都是產線上的毒瘤,必須立刻隔離切除。

  1. 強制殲滅 time.sleep()
    在 Linter 裡直接把 time.sleep() 列為禁字。任何測試都不允許使用靜態等待,必須強制改用動態的 Polling(輪詢)或 Explicit Waits。
# pyproject.toml 
[tool.ruff]
# 產線防呆:抓出 AI 亂寫的 time.sleep
# 可以透過設定自訂的 flake8 規則或是 Review 機器人
# 看到 time.sleep 直接噴 Error,強迫改用 WebDriverWait 或 tenacity 重試機制

上一篇
等一下,怎麼會出現 17.1 元
下一篇
孤兒data: 寫資料庫操作不加 Transaction 的後果
系列文
拒絕通靈測試與 AI 垃圾:SDET 的 30 天自動化防禦工事9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言